<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let p = new Promise((resolve,reject) =>{
            reject(1);
        })

        p1 = p.then(data =>{
            console.log();
            // return data;
        },e =>{
            return 1
        })
        console.log(p1);

        //  let p1 = new Promise((resolve,reject) =>{
        //     resolve(1);
        // })

        //1.  then方法 每次都会返回一个新的promise对象
        // 2. promise 状态 state   结果result
        // 3. then方法  会把回调函数（onfulfilled 或者 onrejected）的返回值包装成promise对象返回
        //      如果onfulfilled 或者 onrejected的返回值不是promise实例，
        // then返回的promise对象的result就是onfulfilled 或者 onrejected的返回值， 状态就是fulfilled
        // p1.then(data =>{
        //     console.log("正确");
        // }).then(() =>{

        // }).then(() =>{

        // })

        //方法1
        // let p2 = p1.then((data) =>{
        //     console.log();
        //     return 2;//值为2
        // })
        // p2.then(result =>{
        //     console.log(result);//2
        // })

        // 方法2
        // let p2 = p1.then((data) =>{
        //     console.log();  
        //     return 2;//值为2
        // }).then(result =>{
        //     console.log(result);//2
        // })
        // console.log(p2);


        // 如果onfulfilled 或者 onrejected的返回值是promise实例A，
        // then返回的也是一个promise实例B， 且B的状态和结果 会跟着A走
        // let p3 = new Promise((resolve,reject) =>{
        //     resolve(1);
        // })

        // let p4 = p3.then(data =>{
        //     return new Promise((resolve,reject) =>{
        //         setTimeout(() =>{
        //             // resolve(2);
        //             reject(2);
        //         },2000)
        //     })
        // })

        // console.log(p4);
    </script>
</body>
</html>